//  给定一个数组nums，再给定一个数字k，要求将数组中的元素向右移动k个位置，说明：空间复杂度为O(1)的原地算法解决这个问题
// 思路，首先将数组翻转，然后将【0， k-1】的位置上的元素全部翻转，最后将【k，n-1】的位置上的元素翻转

function rotate(nums, k) {
    let n = nums.length
    k = k % n
    reverse(nums, 0, n - 1)
    reverse(nums, 0, k - 1)
    reverse(nums, k, n - 1)
}

function reverse(nums, left, right) {
    while (left < right) {
        [nums[left], nums[right]] = [nums[right], nums[left]];
        left++
        right--
    }
}

// 时间复杂度为On
// 空间复杂度为O1

let arr = [1, 2, 3, 4, 5, 6, 7]
let k = 3
rotate(arr, k)
console.log(arr);